package com.winit.openapi.apiadapter.controller.util;

import java.util.HashSet;
import java.util.Set;

import com.winit.openapi.model.ResponseMsg;
import com.winit.openapi.model.ResponseMsgFor3E;

public class ApiAdapteUtil {

    /**
     * 目前已经做了适配的API列表，在此列表里面的API不需要转发，直接在OpenAPI里面做业务操作
     */
    private static Set<String> adapted_api_list = new HashSet<String>();

    static {
        // 派送方式查询，对外
        adapted_api_list.add("queryDeliveryWay");
        // 保险类型查询
        adapted_api_list.add("queryDeliveryInsuranceType");
        // 提交海外仓订单
        adapted_api_list.add("confirmOutboundOrder");
        // 出库单作废
        adapted_api_list.add("voidOutboundOrder");
        // 出库单预估费用
        adapted_api_list.add("queryDeliveryFee");
        // 出库单轨迹查询
        adapted_api_list.add("queryTrack");
        // 仓库代码查询
        adapted_api_list.add("queryWarehouse");
        // 出库单列表查询
        adapted_api_list.add("queryOutboundOrderList");
        // 出库单详情查询
        adapted_api_list.add("queryOutboundOrder");
        // 获取token
        adapted_api_list.add("getToken");
        // 出库单下单：确认单
        adapted_api_list.add("createOutboundOrder");
        // 出库单下单：草稿单
        adapted_api_list.add("createOutboundInfo");
        // 分销下单
        adapted_api_list.add("createOutboundOrderFx");
        // 注册商品
        adapted_api_list.add("registerProduct");

        // 分页查询库存
        adapted_api_list.add("queryProductInventoryList4Page");

        // 查询库存详情
        adapted_api_list.add("queryProductInventoryDetail");

        // 海外仓总库存查询
        adapted_api_list.add("queryWarehouseStorage");
    }

    /**
     * 转换openAPI和3E的返回值
     * 
     * @param responseMsg
     * @return
     */
    public static ResponseMsgFor3E convertResponse(ResponseMsg responseMsg) {
        ResponseMsgFor3E responseMsgTo3E = new ResponseMsgFor3E();
        String code = responseMsg.getCode();
        String msg = responseMsg.getMsg();
        int codeTo3E = 0;
        try {
            codeTo3E = Integer.valueOf(code);
        } catch (NumberFormatException e) {
            codeTo3E = 400000;
        }
        responseMsgTo3E.setCode(codeTo3E);
        responseMsgTo3E.setData(responseMsg.getData());
        responseMsgTo3E.setMsg(msg);

        return responseMsgTo3E;
    }

    public static Set<String> getAdapted_api_list() {
        return adapted_api_list;
    }
}
